package reservation.v1;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe client: client béneficiant de la seule possibilité de réserver
 * 
 * @author Alexandre Boursier and Jerome Boursier
 * @version 2011.11.20
 */

public class Client implements Serializable{
    private static final long serialVersionUID = 6065003861559304083L;
    private String identifiant;
    private String nom;
    private String prenom;

    /**
     * Ajouter tous les attributs d'un objet dans une liste
     * 
     * @return la liste des attributs d'un objet
     */
    public Client(String identifiant, String nom, String prenom)
    {
        this.identifiant = identifiant;
        this.nom = nom;
        this.prenom = prenom;
    }

    /**
     * Ajouter tous les attributs d'un objet dans une liste
     * 
     * @return la liste des attributs d'un objet
     */
    public List<String> parse()
    {
        List<String> attributes = new ArrayList<String>();
        attributes.add("VOYAGEUR");
        attributes.add(identifiant);
        attributes.add(nom);
        attributes.add(prenom);
        return attributes;
    }

    /**
     * @return le nom du client
     */
    public String getNom() {
        return nom;
    }

    /**
     * @return le prenom du client
     */
    public String getPrenom() {
        return prenom;
    }

    /**
     * @return l'identifiant du client
     */
    public String getIdentifiant() {
        return identifiant;
    }

    /**
     * toString()
     * 
     * @return string contenant les informations d'un client
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(" - Login : " + identifiant + " / Nom : " + nom + " / Prénom : " + prenom + ".\n");
        return sb.toString();
    }

    /**
     * Demander à un client simple de s'inscrire
     * @param t
     *          Le trajet (voyage) auquel il souhaite s'inscrire
     * @return
     * @throws IOException
     */
    public boolean demanderReservation(Trajet t) throws IOException
    {
        if(Serveur.traiterDemandeReservation(this, t))
            return true;
        else return false;
    }
}
